#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
using namespace std;

vector<int> ans;
bool dfs(int i, int c, vector<int>& arr, int r)
{
    if (r < c)
        return false;

    if (c < 0)
        return false;
    if (c == 0)
        return true;
    if (i == arr.size())
        return false;
    ans.push_back(arr[i]);
    if (dfs(i + 1, c - arr[i], arr, r - arr[i]))
        return true;
    //
    ans.pop_back();
    return dfs(i + 1, c, arr, r - arr[i]);
}

int main()
{
    int n, c;
    cin >> n >> c;
    vector<int> arr(n);
    int t = 0;
    for (int i = 0; i < n; i++)
    {
        cin >> arr[i];
        t += arr[i];
    }

    if (dfs(0, c, arr, t))
    {
        for (auto& e : ans)
            cout << e << ' ';
    }
    else
        cout << "No Solution!";
}